package com.hidtechs.popfax.view;


import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.hidtechs.popfax.R;

public class SendSms extends Activity {
    /** Called when the activity is first created. */
	 Button btnSendSMS;
	 Button btnPopFaxContactsSMS;
	 Button btnPhoneContactsSMS;
	    EditText txtPhoneNo;
	    EditText txtMessage;
	    private static final int PICK_CONTACT =2;
	 
	    /** Called when the activity is first created. */
	    @Override
	    protected void onCreate(Bundle savedInstanceState) 
	    {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.sms);        
	 
	        btnSendSMS = (Button) findViewById(R.id.sendBtn);
	        btnPopFaxContactsSMS = (Button) findViewById(R.id.popContactsBtn);
	        btnPhoneContactsSMS = (Button) findViewById(R.id.phoneContactsBtn);
	        txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo);
	        txtMessage = (EditText) findViewById(R.id.txtMessage);
	        
	    
	        btnSendSMS.setOnClickListener(new View.OnClickListener() 
	        {
	            public void onClick(View v) 
	            {                
	                String phoneNo = txtPhoneNo.getText().toString();
	                String message = txtMessage.getText().toString();                 
	                if (phoneNo.length()>0 && message.length()>0)                
	                    sendSMS(phoneNo, message);                
	                else
	                    Toast.makeText(getBaseContext(), 
	                        "Please enter both phone number and message.", 
	                        Toast.LENGTH_SHORT).show();
	            }
	        });
	        
	        btnPopFaxContactsSMS.setOnClickListener(new View.OnClickListener() 
	        {
	            public void onClick(View v) 
	            {                
	                    Toast.makeText(getBaseContext(), 
	                        "PopFax", 
	                        Toast.LENGTH_SHORT).show();
	            }
	        });
	        
	        btnPhoneContactsSMS.setOnClickListener(new View.OnClickListener() 
	        {
	            public void onClick(View v) 
	            {                
	            	/*Uri uri = Uri.parse("content://contacts/people");
	                 Intent intent = new Intent(Intent.ACTION_PICK, uri);*/
	            	 
	            	 Intent intent = new Intent(Intent.ACTION_PICK, android.provider.ContactsContract.CommonDataKinds. Phone.CONTENT_URI);  
	            	  startActivityForResult(intent, PICK_CONTACT); 
	            	  
	            
	            }     
	                 
	        });
	        
	    }    

	    @Override
	    protected void onActivityResult(int reqCode, int resultCode, Intent data) { 
	          super.onActivityResult(reqCode, resultCode, data); 
	         
	          switch (reqCode) { 
	            case (PICK_CONTACT) : 
	              if (resultCode == Activity.RESULT_OK) { 
	                Uri contactData = data.getData(); 
	                Cursor c =  managedQuery(contactData, null, null, null, null); 
	                if (c.moveToFirst()) { 
	                  String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
	                  // TODO Whatever you want to do with the selected contact name. 
	                  txtPhoneNo.setText(name);
	                } 
	              } 
	              break; 
	          } 
	        } 
	    
	    
	    private void sendSMS(String phoneNumber, String message)
	    {        
	        String SENT = "SMS_SENT";
	        String DELIVERED = "SMS_DELIVERED";
	 
	        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
	            new Intent(SENT), 0);
	 
	        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
	            new Intent(DELIVERED), 0);
	 
	        //---when the SMS has been sent---
	        registerReceiver(new BroadcastReceiver(){
	            @Override
	            public void onReceive(Context arg0, Intent arg1) {
	                switch (getResultCode())
	                {
	                    case Activity.RESULT_OK:
	                        Toast.makeText(getBaseContext(), "SMS sent", 
	                                Toast.LENGTH_SHORT).show();
	                        break;
	                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
	                        Toast.makeText(getBaseContext(), "Generic failure", 
	                                Toast.LENGTH_SHORT).show();
	                        break;
	                    case SmsManager.RESULT_ERROR_NO_SERVICE:
	                        Toast.makeText(getBaseContext(), "No service", 
	                                Toast.LENGTH_SHORT).show();
	                        break;
	                    case SmsManager.RESULT_ERROR_NULL_PDU:
	                        Toast.makeText(getBaseContext(), "Null PDU", 
	                                Toast.LENGTH_SHORT).show();
	                        break;
	                    case SmsManager.RESULT_ERROR_RADIO_OFF:
	                        Toast.makeText(getBaseContext(), "Radio off", 
	                                Toast.LENGTH_SHORT).show();
	                        break;
	                }
	            }
	        }, new IntentFilter(SENT));
	 
	        //---when the SMS has been delivered---
	        registerReceiver(new BroadcastReceiver(){
	            @Override
	            public void onReceive(Context arg0, Intent arg1) {
	                switch (getResultCode())
	                {
	                    case Activity.RESULT_OK:
	                        Toast.makeText(getBaseContext(), "SMS delivered", 
	                                Toast.LENGTH_SHORT).show();
	                        break;
	                    case Activity.RESULT_CANCELED:
	                        Toast.makeText(getBaseContext(), "SMS not delivered", 
	                                Toast.LENGTH_SHORT).show();
	                        break;                        
	                }
	            }
	        }, new IntentFilter(DELIVERED));        
	 
	        SmsManager sms = SmsManager.getDefault();
	        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
	    }
}